#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int>PII;
int n, m;
int g[109][109];//邻接矩阵（稠密图）
int d[109][109];//每个点到起点的距离
queue<PII>q;
int bfs(){
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, -1, 0, 1};//左上右下
    memset(d, -1, sizeof(d));
    d[0][0] = 0;
    q.push({0, 0});
    while(!q.empty()){
        for(int i = 0; i < 4; i ++){
            int x = q.front().first + dx[i], y = q.front().second + dy[i];
            if(x >= 0 && x < n && y >= 0 && y < m && g[x][y] == 0 && d[x][y] == -1){
                d[x][y] = d[q.front().first][q.front().second] + 1;
                q.push({x, y});
            }
        }
        q.pop();
    }
    return d[n - 1][m - 1];
}
int main(){
    cin >> n >> m;
    for(int i = 0; i < n; i ++){//存图
        for(int j = 0; j < m; j ++){
            cin >> g[i][j];
        }
    }
    cout << bfs() << endl;
    return 0;
}